#  -*- coding:utf-8 -*- 
"""
@ author: 罗金盛
@ time: 2023/9/28 
@ file: 初识NLTK.py

"""
"""NLTK的sent_tokenize实现分句与分词"""
import nltk
from nltk.tokenize import sent_tokenize
from nltk.corpus import gutenberg  # 古腾堡语料库

# nltk.download('punkt')  # 查看语料库 但是这里会显示连接服务器失败 初步判断被墙（后面发现是GitHub）
# 在使用sent_tokenize()时候发现报错 nltk.download(‘punkt‘)报错 应该要下载punkt 重新下载之后报错解决 并且只用下载一次

text = "Hello Mr.Smith,how are you doing today? The weather is great, and Python is awesome. The sky is pinkish-blue. You shouldn't eat cardboard."

text_sentence = nltk.sent_tokenize(text)  # 分句
text_word = nltk.word_tokenize(text)  # 分词  后续可以使用FreqDist()来进行频率分布统计
print(text_sentence)
print(text_word)

"""NLTK 读取Gutenberg 语料库前五行"""
# nltk.download('gutenberg')  # 还是要先下载这个语料库！！

# 第一种获取 Gutenberg 语料库的方法 直接用austen-emma.txt
file_raw = gutenberg.raw('austen-emma.txt')
print(file_raw[:500])

# 第二种获取 Gutenberg 语料库的文件ID列表
file_ids = gutenberg.fileids()

# 读取第一个文件的前五行内容
file_raw = gutenberg.open(file_ids[0]).read().split('\n')[:5] # 这里可以自己设定长度

# 打印前五行内容
for line in file_raw:
    print(line)


"""sklearn利用digits dataset实现无监督聚类"""
import numpy as np
from sklearn.datasets import load_digits
import matplotlib.pyplot as plt

# 加载digits数据集
digits = load_digits()
data = digits.data
target = digits.target




# 使用PCA（Principal Component Analysis）对数据进行降维。
from sklearn.decomposition import PCA
pca = PCA(n_components=2)  # 把数据降为2维
X_pca = pca.fit_transform(data)

# 使用K-Means算法对降维后的数据进行聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=10)  # 假设有10个聚类
kmeans.fit(X_pca)

# 可视化
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k', 'w', '#FF00FF', '#FFFF00']  # 设置10个聚类的颜色
for i in range(len(X_pca)):
    plt.scatter(X_pca[i, 0], X_pca[i, 1], color=colors[kmeans.labels_[i]])
plt.show()













